/**
 * @author Silas Fontain, Søren Lorentzen, Daniel Nissen
 */

package ordination;

import static org.junit.Assert.*;

import java.util.GregorianCalendar;

import org.junit.Before;
import org.junit.Test;

public class DagligFastTest {
	private DagligFast dftest;
	private Laegemiddel lm;

	@Before
	public void setUp() throws Exception {
		GregorianCalendar startDato = new GregorianCalendar(1999, 11, 15);
		GregorianCalendar slutDato = new GregorianCalendar(2000, 00, 15);
		lm = new Laegemiddel("Test dope", 0.1, 0.2, 0.3, "stk");
		dftest = new DagligFast(startDato, slutDato, lm);
	}
	
	/**
	 * opretter et sæt data
	 */
	private void addData1() {
		dftest.createDosis(5, "Morgen");
		dftest.createDosis(1, "Middag");
		dftest.createDosis(2, "Aften");
		dftest.createDosis(2, "Nat");
	}
	
	/**
	 * opretter et sæt data
	 */
	private void addData2() {
		dftest.createDosis(1, "Morgen");
		dftest.createDosis(0, "Middag");
		dftest.createDosis(2, "Aften");
		dftest.createDosis(0, "Nat");
	}

	@Test
	public void testSamletDosis() {
		addData1();
		assertEquals(320, dftest.samletDosis(), 0.1);
		
		// Forsøger at nulstille testdata så metoden kan gennemføre flere tests
		try {
			setUp();
		} catch (Exception e) {
			fail("setup failed");
		}
		
		addData2();
		assertEquals(96, dftest.samletDosis(), 0.1);
	}

	@Test
	public void testDoegnDosis() {
		addData1();
		assertEquals(10, dftest.doegnDosis(), 0.1);
		
		// Forsøger at nulstille testdata så metoden kan gennemføre flere tests
		try {
			setUp();
		} catch (Exception e) {
			fail("setup failed");
		}
		
		addData2();
		assertEquals(3, dftest.doegnDosis(), 0.1);
	}

	@Test
	public void testDagligFast() {
		Laegemiddel abc = new Laegemiddel("ABC", 0.01,0.015,0.02, "Styk");
		DagligFast dftest2 = new DagligFast(new GregorianCalendar(2011, 00, 03), new GregorianCalendar(2011, 00, 20), abc);
		
		// Tester at ordinationen er oprettet med korrekt antal dage
		assertEquals(18, dftest2.antalDage());
		
		// Tester at linket til Laegemiddel er etableret
		assertEquals(abc, dftest2.getLaegemiddel());
		
		// Tester at arrayet oprettes som tomt
		for(int i = 0; i < dftest2.getDoser().length; i++) {
			assertNull(dftest2.getDoser()[i]);
		}
	}

}
